package controllers;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;

import models.Staff;

import org.apache.commons.io.FileUtils;

import play.Play;
import play.mvc.Controller;
import service.StaffService;

public class StaffAction extends Controller{

	/**
	 * 查询相关招聘信息的人才信息
	 * @param id  招聘信息id
	 */
	public static void list(Long id){
		List<Staff> staffs = StaffService.findAll(id);
		render(staffs,id);
	}
	
	/**
	 * 跳转向修改页面
	 * 
	 * @param id 人才信息id
	 */
	public static void show(Long id){
		Staff staff = StaffService.findById(id);
		render(staff);
	}
	
	/**
	 * 人才信息的修改方法
	 * 
	 * @param staff  人才对象
	 * @param upload 上传的简历文件
	 */
	public static void save(Staff staff,File upload){
		if(upload == null){
			StaffService.update(staff);
			flash.success("修改成功");
			list(staff.employment.id);
		}else{
			File file = Play.getFile("/public/staff/"+upload.getName());
			try {
				FileUtils.copyFile(upload, file);
				staff.staRes = "/public/staff/"+upload.getName();
				StaffService.update(staff);
				flash.success("修改成功");
				list(staff.employment.id);
			} catch (Exception e) {
				System.out.println("类StaffAction中的create（）方法抛异常");
				e.printStackTrace();
				flash.success("修改失败");
				blank(staff.employment.id);
			}
		}
	}
	
	/*Staff staff = new Staff();
	Binder.bindBean(params.getRootParamNode(), "staff", staff);
	StaffService.update(staff);
	list(staff.employment.id);*/

	
	/**
	 * 人才信息的删除方法
	 * 
	 * @param id
	 */
	public static void delete(Long id,Long empId){
		try {
			StaffService.delete(id);
			flash.success("删除成功");
			list(empId);
		} catch (Exception e) {
			System.out.println("类StaffAction中的delete（）方法抛异常");
			e.printStackTrace();
			flash.success("删除失败");
			list(empId);
		}
	}

	/**
	 * 跳转向添加页面的方法
	 * 
	 * @param id 招聘信息id
	 */
	public static void blank(Long id){
		render(id);
	}
	
	/**
	 * 添加新的人才信息
	 * 
	 * @param staff 人才对象
	 * @param upload 上传的简历文件
	 */
	public static void create(Staff staff,File upload){
		System.out.println(staff.employment.id);
		staff.staEnr = Calendar.getInstance().getTime();
		File file = Play.getFile("/public/staff/"+upload.getName());
		try {
			FileUtils.copyFile(upload, file);
			staff.staRes = "/public/staff/"+upload.getName();
			StaffService.add(staff);
			flash.success("添加成功");
			list(staff.employment.id);
		} catch (Exception e) {
			System.out.println("类StaffAction中的create（）方法抛异常");
			e.printStackTrace();
			flash.success("添加失败");
			blank(staff.employment.id);
		}
	}
	
}
